## Script van Simon Jackman, aangepast door Tom Louwerse
## House weights idea, based on script from Chris Hanretty: https://github.com/chrishanretty/election4castUK/blob/master/src/pool.R

model{
 ## measurement model
 for(i in 1:NPOLLS){
       mu[i] <- alpha[date[i]] + house[org[i],houseperiod[i]]  ## Het gerapporteerde percentage bestaat uit het 'echte' %  en een huiseffect (waarbij eventueel meerdere perioden worden onderscheiden)
	   y[i] ~ dnorm(mu[i],prec[i])				## Het gerapporteerde percentage wordt getrokken uit een normaalverdeling 
												## met mu als gemiddelde en de standaardfout van de peiling als standaardafwijking
       prec[i] <- 1 / (vari[i])  # * pie)
 }


    	alpha[STARTTRANSITION+1] ~ dunif(0,1)    ## This allows a random start between 0 and 1 on the first day the party appears

 ## transition model (aka random walk prior)
 for(i in (STARTTRANSITION + 2):(CAMPAIGNSTART-1)){				## STARTTRANSITION = 2 voor alle partijen, behalve nieuwe partijen
        mu.alpha[i] <- alpha[i-1]				
        alpha[i] ~ dnorm(mu.alpha[i],tau * shocksize[shocknumber[i]])    		## Het 'echte' % van vandaag wordt getrokken uit een normaalverdeling met als gemiddelde
												    ## het percentage van gisteren en standaardafwijking tau (tau wordt geschat in het model)
													## (voor zeer kleine partijen wordt een truncated distribution gebruikt, zodat alpha > 0)
 }
 
  ## transition during campaign
  for(i in CAMPAIGNSTART:NPERIODS){				## STARTTRANSITION = 2 voor alle partijen, behalve nieuwe partijen
        mu.alpha[i] <- alpha[i-1]				
        alpha[i] ~ dnorm(mu.alpha[i], tau * shocksize[3])    		
													## Het 'echte' % van vandaag wordt getrokken uit een normaalverdeling met als gemiddelde
												    ## het percentage van gisteren en standaardafwijking tau (tau wordt geschat in het model)
													## (voor zeer kleine partijen wordt een truncated distribution gebruikt, zodat alpha > 0)
 }

  # Define priors for shocks
  shocksize[1] <- 1
  for(i in 2:3) {
    shocksize[i] ~ dunif(0.0001, 1)
  }  


 ## priors
 tau <- 1/pow(sigma,2)   ## deterministic transform to precision
 sigma ~ dunif(0,.005)    ## uniform prior on standard deviation
 # pie ~ dlnorm(0, 16)	 ## log-normal prior on pollster induced error
 #pie ~ dunif(0.001, 10)	 ## pollster induced error has uniform prior
 
 ## house effects
 for(j in 1:NHOUSEPERIODS) {
	for(i in 1:NHOUSE) {
		house_us[i,j] ~ dnorm(0, 400)
		house[i,j] <- house_us[i,j] - inprod(house_us[,j], house_weights[,j]) 
	}
 }
	
}
